package com.tan.kotlintest.net

import com.alibaba.fastjson.JSON
import com.tan.kotlintest.util.LogUtil
import okhttp3.Call
import okhttp3.Response
import java.lang.reflect.ParameterizedType
import java.lang.reflect.Type

/*
 * Copyright (C) 2018 重庆一聊高科技有限公司
 * 版权所有
 *
 * 功能描述：返回数据解析封装
 * 作者：txj
 * 创建时间：2018/9/11
 *
 * 修改人：
 * 修改描述：
 * 修改日期
 */
abstract class AjaxCallback<T> : com.zhy.http.okhttp.callback.Callback<T>() {

    private val types: Array<Type>? = (javaClass.genericSuperclass as ParameterizedType).actualTypeArguments

    @Throws(Exception::class)
    override fun parseNetworkResponse(response: Response, id: Int): T? {
        if (response.isSuccessful && types != null && types.isNotEmpty()) {
            val str = response.body()?.string()
            try {
                return JSON.parseObject<T>(str, types[0])
            } catch (e: Exception) {
                e.printStackTrace()
                LogUtil.i("==--", "数据解析失败-" + e.message)
            }
        }
        return null
    }

    override fun onError(call: Call, e: Exception, id: Int) {
        LogUtil.i("请求数据失败==--", call.request().url().toString())
    }

}